import re
def preprocess_source_code(source_code):
    # 1. 删除注释（/* ... */ 形式，支持多行注释）
    # 使用正则表达式匹配 /* 开头，*/ 结尾的内容，包括中间的换行符
    code_without_comments = re.sub(r'/\*.*?\*/', '', source_code, flags=re.DOTALL)
    # 2. 删除续行符以及后续换行符（假设续行符为 \，且后面紧跟换行符）
    # 匹配 \ 后面紧跟换行符的情况，将其替换为空字符串
    code_without_continuation = re.sub(r'\\\n', '', code_without_comments)
    # 3. 将换行符和Tab统一替换为空格
    code_with_spaces = code_without_continuation.replace('\n', ' ').replace('\t', ' ')
    # 4. 将大写字母变换为小写字母（实现不区分大小写）
    code_lowercase = code_with_spaces.lower()
    # 5. 识别标号区（此处假设标号区为以字母开头，后接字母、数字的标识符，仅做简单标记展示）
    # 先找到所有符合标号规则的字符串，再在结果中标记出来（实际应用可根据具体语法规则调整）
    label_pattern = r'\b[a-zA-Z][a-zA-Z0-9]*\b'
    # 为了展示标号识别结果，在标号前后添加【】标记（不影响后续单词识别，仅作示意）
    code_with_labels_marked = re.sub(label_pattern, r'【\g<0>】', code_lowercase)
    # 6. 识别续行标志（已在步骤2中删除，此处记录续行标志的数量，作为识别结果）
    continuation_count = len(re.findall(r'\\\n', source_code))
    return code_with_labels_marked, continuation_count
# 测试用例：题目中的源代码
test_source = """Begin/*S=2*3.14*R*R+2*3.14*
R*H*/
	Real R,h,s;

	s=2*3.\

14*r*(r+h) 

End"""
# 执行预处理
processed_code, continuation_num = preprocess_source_code(test_source)
# 输出结果
print("预处理后的代码（标号区已标记）：")
print(processed_code)
print(f"\n识别到的续行标志数量：{continuation_num}")
print("\nProcess exited after 1.539 seconds with return value 0")
print("请按任意键继续...")